#include <algorithm>
#include <iostream>
#include <string_view>
#include <tuple>
#include <utility>
#include <vector>
using namespace std;


class Solution {
public:
    static inline int getminarea(const vector<vector<int>>&v,int x1,int y1,int x2,int y2){
        bool all0=true;
        int a1=x2,b1=y2,a2=x1,b2=y1;
        for(int i=x1;i<x2;i++){
            for(int j=y1;j<y2;j++){
                if(v[i][j]==1){
                    all0=false;
                    a1=min(a1,i);
                    b1=min(b1,j);
                    a2=max(a2,i);
                    b2=max(b2,j);
                }
            }
        }
        if(all0)return 0;
        return (b2-b1+1)*(a2-a1+1);
    }
    int minimumSum(const vector<vector<int>>& g) {
        int ans=1145141;
        //横三条
        for(int i=1;i<g.size();i++){
            for(int j=i+1;j<g.size();j++){
                int nans=0;
                nans+=getminarea(g, 0, 0, i, g[0].size());
                nans+=getminarea(g, i, 0, j, g[0].size());
                nans+=getminarea(g, j, 0, g.size(), g[0].size());
                ans=min(ans,nans);
            }
        }
        //竖三条
        for(int i=1;i<g[0].size();i++){
            for(int j=i+1;j<g[0].size();j++){
                int nans=
                getminarea(g, 0, 0, g.size(), i)
                +getminarea(g, 0, i, g.size(), j)
                +getminarea(g, 0, j, g.size(), g[0].size());
                ans=min(ans,nans);
            }
        }
        //上长条
        for(int i=1;i<g.size();i++){
            for(int j=1;j<g[0].size();j++){
                int nans=
                getminarea(g, 0, 0, i, g[0].size())
                +getminarea(g, i, 0, g.size(), j)
                +getminarea(g, i, j, g.size(), g[0].size())
                ;
                ans=min(ans,nans);
            }
        }
        //下长条
        for(int i=1;i<g.size();i++){
            for(int j=1;j<g[0].size();j++){
                int nans=
                getminarea(g, 0, 0, i, j)
                +getminarea(g, i, 0, g.size(), g[0].size())
                +getminarea(g, 0, j, i, g[0].size())
                ;
                ans=min(ans,nans);
            }
        }
        //左长条
        for(int i=1;i<g.size();i++){
            for(int j=1;j<g[0].size();j++){
                int nans=
                getminarea(g, 0, 0, g.size(), j)
                +getminarea(g, 0, j, i, g[0].size())
                +getminarea(g, i, j, g.size(), g[0].size())
                ;
                ans=min(ans,nans);
            }
        }
        //右长条
        for(int i=1;i<g.size();i++){
            for(int j=1;j<g[0].size();j++){
                int nans=
                getminarea(g, 0, 0, i, j)
                +getminarea(g, i, 0, g.size(), j)
                +getminarea(g, 0, j, g.size(), g[0].size())
                ;
                ans=min(ans,nans);
            }
        }

        return ans;
    }
};

int main(){

}